package threadTest.synchronizedTest;

/**
 * 功能描述: 资源类, 0 1 0 1 类似于管程法, 信号 灯 , 线程之间的通信问题,  互相通知执行
 * 2024/02/21
 * <p>
 * ZhangYi
 */
public class Data {

    private int number = 0;


    public synchronized void increament() throws InterruptedException {
        if (number!=0){
            this.wait();  // 不等于0 说明 没有被消费掉, 这里等待, 直到被消费掉,
        }
        number++;
        System.out.println(Thread.currentThread().getName()+ " => " + number);
        this.notifyAll();
    }

    public synchronized void decreament() throws InterruptedException {
        if (number ==0 ){
            this.wait(); // 等于0 说明 没有被生产, 这里等待, 直到被生产
        }
        number--;
        System.out.println(Thread.currentThread().getName()+ " => " + number);
        this.notifyAll();
    }

}
